/* 
包含的是用户搜索模块相关的接口请求函数
内部调用axios发请求, 返回值是promise
*/

import axios from "axios";
import type { ReqSearchUsersResponse } from "./model/userSearchTypes";
import type { AxiosResponse } from "axios";

// 搜索用户列表的接口请求函数
export function reqSearchUsers(searchName: string) {
  /* 
  get<T = any, R = AxiosResponse<T>, D = any>
    AxiosResponse<T = any, D = any>  {
      data: T;  // 响应体数据 => 它的类型可以通过get<T>第一个泛型类型来指定
      status: number;
      statusText: string;
    }

    // data的类型T可以通过get第一个泛型或者第二泛型来指定
      get<any, AxiosResponse<ReqSearchUsersResponse>>
      get<ReqSearchUsersResponse>
      

    
  指定响应体数据, 也就是response.data的数据类型
    方式一: get<ReqSearchUsersResponse>
    方式二: get<any, AxiosResponse<ReqSearchUsersResponse>>
  */
  // return axios.get<ReqSearchUsersResponse>('https://api.github.com/search/users', {
  return axios.get<any, AxiosResponse<ReqSearchUsersResponse>>('https://api.github.com/search/users', {
    params: {
      q: searchName
    }
  })
}

async function fn() {
  const response = await reqSearchUsers('a')
  response.data.items[0].avatar_url
}